Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Реалізація програмних затримок за допомогою таймерів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Програмування

Частина тексту файла

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка» ЗВІТ про виконання лабораторної роботи №2: з курсу «Програмування мікроконтролерів СА» Тема: «Реалізація програмних затримок за допомогою таймерів» Варіант № 1 Мета роботи: Зібрати у пакеті симуляції Proteus схему на основі МК ATmega32A та написати програму мовою асемблер для реалізації вказаного алгоритму. Завдання: Таблиця 1. № п/п Завдання Часові інтервали вимірюються за допомогою таймерів, при цьому паралельно виконується робота в основній програмі. При використанні таймера 2 в асинхронному режимі передбачається, що він тактується від годинникового кварца 32768 Гц. При переключенні світлодіодів звукова піщалка має видавати звук тривалістю 0,1 сек.(для непарних варіантів) та 0,2 сек. (для парних варіантів).   Таймер Кноп-ка Сиг-нал Світло-діоди Затримка Алго-ритм  1 0 PC5 PD2 PORTA 1,15 сек. 8   Таблиця 2. Варіанти алгоритмів роботи для світлодіодів № п/п Опис алгоритму  8 Лінійка з 8-ми одноколірних світлодіодів. При натисканні кнопки світлодіоди починають почергово блимати по одному з обох боків рухаючись назустріч. P7→P0→P6→P1→ P5→P2→P4→P3   / Рис.1. Схема підключення в пакеті Proteus Остаточна версія програми: .include "m32Adef.inc" .def _flag = r0 ; 0біт - пауза =0 (пораховано), =1(ще рахує) ; 2біт - тривалість паузи =0(1сек), =1(0.5сек) .def _count = r21 .def _count2= r22 .def _countA= r23 .def _countBuz = r24 .CSEG .org $000 jmp RESET ; Reset Handler .org $014 jmp TIM0_COMP ; Timer0 Compare Handler .org $028 reti ;Store Program Memory Ready Handler ;підпрограма переривання по співпадінню Таймера 0 ---------------- TIM0_COMP: sbrs _flag, 0 ; якщо відлік дозволений rjmp Task0end inc _count ; _count++ cpi _count, 100 ; порівнюємо з числом 20 brne Task0end ; на кінець, якщо не рівне rjmp ready ready: clt ; Т=0 bld _flag, 0 ; 0біт=1 (пауза порахована) clr _count ; _count=0 Task0end: ;----------------------Task3 (звук)-------------------------- sbrs _flag, 4 rjmp Task3end inc _countBuz cpi _countBuz, 6 brne Task3end clt bld _flag, 4 ;(пораховано) clr _countBuz ;(обнулення) cbi PORTD, 2 ;викл. звук Task3end: T0end: reti ;------------------------------------------------------------------------------------------ RESET: ldi r16, Low(RAMEND) out SPL, r16 ldi r16, High(RAMEND) out SPH, r16 ldi r16, 0x00 ldi r17, 0xFF out DDRC, r16 ; порт C на вхід out PORTC, r17 out DDRD, r17 ; порт D на вихід out PORTD, r16 out DDRA, r17 out PORTA, r16 clr _countA clr _countBuz ; таймер_0 скид по співпадінню, 25msec, Prescaler=1024, OCR=0xC2 ldi r16, (1<<WGM01)|(1<<CS02)|(1<<CS00) out TCCR0, r16 ; OCR=0xC2 ldi r16, 0x59 out OCR0, r16 ; OCR=0xC2 ldi r16, (1<<OCIE0) out TIMSK, r16 ; дозвіл на перер. по співпадінню ; обнулюємо регістри clr _count clr _flag sei ; заг. дозвід на переривання ;---------- Основна програма ------------------------------------------------------- main: sbic PINC, 5 rjmp end ; а якщо ні -- робимо щось інше ldi _count2, 0 PUSH _count2 ldi _count2, 8 PUSH _count2 ldi _count2, 16 PUSH _count2 ldi _count2, 4 PUSH _count2 ldi _count2, 32 PUSH _count2 ldi _count2, 2 PUSH _count2 ldi _count2, 64 PUSH _count2 ldi _count2, 1 PUSH _count2 ldi _count2, 128 PUSH _count2 foo: sbrc _flag, 0 ; якщо пауза відрахована, тоді інверсія робимо роботу rjmp PC5end ; а якщо ні -- робимо щось інше set bld _flag, 0 bld _flag, 4 POP _count2 CPI _count2, 0 breq end out PORTA, _count2 sbi PORTD, 2 PC5end: rjmp foo end: rjmp main / Рис. 2. Результати роботи програми Висновок: На даній лабораторній роботі ми навчилися створювати програми мовою асемблер з використанням таймерів та звукових сигналів.
Антиботан аватар за замовчуванням

25.02.2013 16:02

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини